package libs

import "fmt"

// 传值——无效
func swap1(a, b int) {
	a, b = b, a
}

// 传指针——有效
func swap2(a, b *int) {
	*a, *b = *b, *a
}

// swap1的复杂写法
func swap3(a, b *int) {
	temp := *a
	*a = *b
	*b = temp
}

// swap2的复杂写法
func swap4(a, b int) {
	temp := a
	a = b
	b = temp
}

// 有返回值的简单写法
func swap5(a, b int) (int, int) {
	return b, a
}

func SwapShow() {
	a := 10
	b := 20

	// 1. 简单写法
	a, b = b, a
	fmt.Println("a = ", a, "b = ", b)

	// 2. 传值——无效
	swap1(a, b)
	fmt.Println("a = ", a, "b = ", b)

	// 3. 传指针——有效
	swap2(&a, &b)
	fmt.Println("a = ", a, "b = ", b)

	// 4. 有返回值
	a, b = swap5(a, b)
	fmt.Println("a = ", a, "b = ", b)
}
